<?php
class ReciboCobranza extends AppModel {
    var $name = 'ReciboCobranza';
    var $validate = array( 
        'nombre_cliente' => VALID_NOT_EMPTY,
    );

    var $belongsTo = array(                  
            'CodigoDocumentoReferencia' => array(
                    'className' => 'CodigoDocumento',
                    'foreignKey' => 'codigo_documento_ref_id'
            ),
            'DocumentoReferencia' => array(
                    'className' =>'DocumentoVenta',
                    'foreignKey' => 'documento_referencia_id'
            ),	
            'Familia' => array(
                    'className' => 'Familia',
                    'foreignKey' => 'familia_id'
            ),           
            'Moneda' => array(
                    'className' => 'Moneda',
                    'foreignKey' => 'moneda_id'
            ),
            'Vendedore' => array(
                    'className' => 'Tercero',
                    'foreignKey' => 'vendedor_id'
            )
    );

    var $hasMany = array(
            'ReciboCobranzaDetalle' => array(
		  'className' => 'ReciboCobranzaDetalle',
		  'foreignKey' => 'recibo_cobranza_id'
            )        
    );

    public function generar_control(){
        $sql = 'select  max(rc.numero_documento) as "ReciboCobranza__numero_documento" 
                from  facturacion.recibo_cobranzas rc 
                where rc.activo and rc.empresa_id = %empresa_id and rc.centro_dist_id = %centro_dist_id';
        $data = $this->query(str_replace(array('%empresa_id','%centro_dist_id'), 
                    array($this->empresaId(), $this->centroDistId()), $sql));
        if(empty($data[0]['ReciboCobranza']['numero_documento'])){
            return '001000001';
        }
        $numero = $data[0]['ReciboCobranza']['numero_documento'];        
        $numero = substr($numero,0,3) .substr('000000'.(substr($numero,3,6) + 1),-6);        
        return $numero;
    }
    
    function getPrintableDocuments($alcance = 0, $usuario = array(), $desde = null, $hasta = null, $sessioned = false){
        $this->recursive= -1;
        $conditions = array(
            'ReciboCobranza.empresa_id'=>$usuario['Tercero']['empresa_id'],
            'ReciboCobranza.centro_dist_id'=>$usuario['Tercero']['centro_dist_id'],
            'ReciboCobranza.fecha'=>$_SESSION['Ejercicio']['Actual']['fecha'],
            'ReciboCobranza.anulado'=>'false',
            'ReciboCobranza.activo'=>'true',
            'ReciboCobranza.cerrado'=>'false'
        );
        if ($alcance == 1){
            $conditions['ReciboCobranza.usuario_creacion_id']=$usuario['id'];
        }
        if (!empty($desde))
            $conditions['ReciboCobranza.numero_documento >=']=$desde;
        if (!empty($hasta))
            $conditions['ReciboCobranza.numero_documento <=']=$hasta;

        $sess = $this->find('all', array(
            'order' => array('ReciboCobranza.numero_documento'=>'ASC'),
            'conditions'=>$conditions));
        if ($sessioned){
            $sess = array();
            foreach($docs as $doc){
                $sess += array($doc['ReciboCobranza']['id']);
            }
            $_SESSION['printable'] = $sess;
        } else $_SESSION['printable'] = null;
        return $docs;
    }

    function getMontoRecibido($data){
        $result = 0;
        foreach($data['ReciboCobranzaDetalle'] as $detalle){
            $result += $detalle['abono'];
        }
        return $result;
    }

    function getMontoPercepcion($data){
        $result = 0;
        foreach($data['ReciboCobranzaDetalle'] as $detalle){
            $result += $detalle['abono_percepcion'];
        }
        return $result;
    }
	
}
?>